package cc.rengu.igas.share.facade.bean.cups;

import cc.rengu.oltp.service.common.enums.OltpRpcdEnum;
import cc.rengu.oltp.service.model.BizException;

import java.util.Arrays;

/**
 * 61.1   证件类别
 *
 * @author fangminwei
 * @date 2021/4/17
 */
@SuppressWarnings("AlibabaEnumConstantsMustHaveComment")
public enum F61_1_DocTypeEnum {
    ___("  ", "当无需传递证件信息时该子域以空格填充"),
    _01("01", "居民身份证"),
    _02("02", "中国人民解放军军官证"),
    _03("03", "护照"),
    _04("04", "港澳居民来往内地通行证"),
    _05("05", "台湾居民来往大陆通行证"),
    _06("06", "警官证"),
    _07("07", "中国人民解放军士兵证"),
    _08("08", "中华人民共和国旅行证（境外使用）"),
    _09("09", "外国护照（境外使用）"),
    _10("10", "外国人永久居留证（境外使用）"),
    _11("11", "中华人民共和国入出境通行证（境外使用）"),
    _12("12", "港澳居民居住证"),
    _13("13", "台湾居民居住证"),
    _99("99", "其它证件证件编号不足20位后补空格"),
    ;

    private String code;
    private String desc;

    F61_1_DocTypeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return code + "-" + desc;
    }

    public static F61_1_DocTypeEnum find(String code) {
        F61_1_DocTypeEnum result = Arrays.stream(F61_1_DocTypeEnum.values())
                .filter(e -> e.getCode().equals(code)).findFirst().orElse(null);

        if (result == null) {
            throw new BizException(OltpRpcdEnum.PARAM_IS_EMPTY_OR_NULL.getRespCode(), "找不到对应的枚举信息" + code);
        }
        return result;
    }
}
